package com.gurid.service.sms.util;

import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.google.gson.Gson;

public class AliyunSmsUtils {

    // 1. 初始化配置对象 com.aliyun.teaopenapi.models.Config 。 Config 对象存放 AccessKeyId、AccessKeySecret 、endpoint 等配置，Endpoint
    private static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
        Config config = new Config()
                .setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = endpoint;

        // 2. 实例化一个客户端，从 com.aliyun.dysmsapi20170525.Client 类生成对象 client 。 后续 request、response 从 com.aliyun.dysmsapi20170525.models 中获得。
        return new Client(config);
    }

    //send
    public static SendSmsResponse sendSms(String accessKeyId, String accessKeySecret, String endPoint, String phoneNumber, String signName, String templateCode, String templateParam) throws Exception {
        Client client = createClient(accessKeyId, accessKeySecret, endPoint);
        // 3. 创建对应 API 的 Request 。 类的命名规则为 API 方法名加上 Request 。
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                // 设置请求类 request 的参数。 通过 request 类的属性设置必要的信息，即 API 中必须要提供的信息。
                .setPhoneNumbers(phoneNumber)
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setTemplateParam(templateParam);
        // 4. 通过 client 对象获得对应 request 响应 response 。
        SendSmsResponse response = client.sendSms(sendSmsRequest);
        System.out.println(new Gson().toJson(response.body));

        return response;
    }


}
